package com.view;

import java.io.Serializable;
import java.util.Date;

import javax.validation.constraints.NotNull;

import com.type.EstadoEnum;
import com.type.TipoMovimientoManualEnum;
import com.type.TipoMovimientoStockEnum;
import com.validators.ObjectSelected;

@SuppressWarnings("serial")
public class MovimientoStockView extends BaseView implements Serializable {

	@NotNull(message = "Valor requerido")
	private TipoMovimientoStockEnum tipoMovimientoStock;

	@NotNull(message = "Valor requerido")
	private TipoMovimientoManualEnum tipoMovimientoManual;

	private ProductoView producto;

	@NotNull(message = "Valor requerido")
	private Double cantidad;

	private DepositoView depositoOrigen;

	@ObjectSelected(message = "Debe seleccionar un deposito")
	private DepositoView depositoDestino;

	@NotNull(message = "Valor requerido")
	private EstadoEnum estado;

	private String observaciones;

	@NotNull(message = "Valor requerido")
	private Date fecha;

	@NotNull(message = "Valor requerido")
	private UsuarioView usuario;

	private StockView stock;

	public MovimientoStockView(Long id,
			TipoMovimientoStockEnum tipoMovimientoStock,
			TipoMovimientoManualEnum tipoMovimientoManual,
			ProductoView producto, Double cantidad,
			DepositoView depositoOrigen, DepositoView depositoDestino,
			EstadoEnum estado, String observaciones, Date fecha,
			UsuarioView usuario, StockView stock) {
		this.id = id;
		this.tipoMovimientoStock = tipoMovimientoStock;
		this.tipoMovimientoManual = tipoMovimientoManual;
		this.producto = producto;
		this.cantidad = cantidad;
		this.depositoOrigen = depositoOrigen;
		this.depositoDestino = depositoDestino;
		this.estado = estado;
		this.observaciones = observaciones;
		this.fecha = fecha;
		this.usuario = usuario;
		this.stock = stock;
	}

	public MovimientoStockView() {
		this(null, TipoMovimientoStockEnum.AUTOMATICO, null,
				new ProductoView(), null, null, new DepositoView(), null, null,
				new Date(), null, null);
	}

	public TipoMovimientoStockEnum getTipoMovimientoStock() {
		return tipoMovimientoStock;
	}

	public void setTipoMovimientoStock(
			TipoMovimientoStockEnum tipoMovimientoStock) {
		this.tipoMovimientoStock = tipoMovimientoStock;
	}

	public TipoMovimientoManualEnum getTipoMovimientoManual() {
		return tipoMovimientoManual;
	}

	public void setTipoMovimientoManual(
			TipoMovimientoManualEnum tipoMovimientoManual) {
		this.tipoMovimientoManual = tipoMovimientoManual;
	}

	public ProductoView getProducto() {
		return producto;
	}

	public void setProducto(ProductoView producto) {
		this.producto = producto;
	}

	public Double getCantidad() {
		return cantidad;
	}

	public void setCantidad(Double cantidad) {
		this.cantidad = cantidad;
	}

	public DepositoView getDepositoOrigen() {
		return depositoOrigen;
	}

	public void setDepositoOrigen(DepositoView depositoOrigen) {
		this.depositoOrigen = depositoOrigen;
	}

	public DepositoView getDepositoDestino() {
		return depositoDestino;
	}

	public void setDepositoDestino(DepositoView depositoDestino) {
		this.depositoDestino = depositoDestino;
	}

	public EstadoEnum getEstado() {
		return estado;
	}

	public void setEstado(EstadoEnum estado) {
		this.estado = estado;
	}

	public String getObservaciones() {
		return observaciones;
	}

	public void setObservaciones(String observaciones) {
		this.observaciones = observaciones;
	}

	public Date getFecha() {
		return fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}

	public UsuarioView getUsuario() {
		return usuario;
	}

	public void setUsuario(UsuarioView usuario) {
		this.usuario = usuario;
	}

	public StockView getStock() {
		return stock;
	}

	public void setStock(StockView stock) {
		this.stock = stock;
	}

}
